perm filename SYM.FAI[1,BGB] blob
sn#001241 filedate 1972-09-07 generic text, type T, neo UTF8
00100 TITLE SYMBOL TABLE SUBROUTINES - SEPTEMBER 1972
00200
00300 ;BALANCED TREE SYMBOL TABLE NODE.
00400
00500 ;WORD0: LEFT,,RIGHT ;TREE LINKS.
00600 TILT←1 ;WORD1: -1 LEFT HEAVY, 0 BALANCED, +1 RIGHT HEAVY.
00700 TAG←2 ;WORD2: NAME-TAG
00800 VALUE←3 ;WORD3: VALUE OF THIS NAME.
00900
01000 ;ACCESS(KEY,ROOT) returns PTR≠0 to node whoes TAGS equals KEY,
01100 ;ACCESS(KEY,ROOT) returns PTR=0 when no such node is found.
01200 SUBR ACCESS
01300 BEGIN
01400 PTR←1 ↔ LEV←2
01500 SKIPN PTR,ARG1↔RET2 ;FETCH ROOT, EXIT IF EMPTY.
01600 LIMZ LEV,PATH
01700
01800 L1: LAC ARG2 ;KEY
01900 SUB TAG(PTR) ;COMPARE GIVEN KEY WITH A NODE TAG.
02000 JUMPE POPJ2. ;DIRECT HIT EQUALS.
02100 JUMPL [
02200 WIP PTR↔PUSH LEV,PTR
02250 CAR PTR,(PTR)↔JUMPN PTR,L1↔POPJ2] ;TAKE LEFT SUBTREE.
02300 TLO PTR,1↔PUSH LEV,PTR
02400 CDR PTR,(PTR)↔JUMPN PTR,L1↔POPJ2 ;TAKE RIGHT SUBTREE.
02500 LIT
02600 BEND